7dd00b5e080eea36f0320ceae2ca1287c5d8ccde,core/generator/source/jetbrains/mps/generator/TransientModelsComponent.java,TransientModelsComponent,clearAll,#,110
Before Change
}
private void clearAll() {
ModelAccess.instance().tryWrite(new Runnable() {
public void run() {
List<TransientModelsModule> toRemove = new ArrayList<TransientModelsModule>(myModuleMap.values());
myModuleMap.clear();
for(TransientModelsModule m : toRemove) {
m.disposeModule();
}
}
});
TransientSwapSpace space = getTransientSwapSpace();
if (space != null) {
After Change
private void clearAll() {
int i;
for (i = 0; i < 3 && !ModelAccess.instance().tryWrite(new Runnable() {
public void run() {
List<TransientModelsModule> toRemove = new ArrayList<TransientModelsModule>(myModuleMap.values());
myModuleMap.clear();
for(TransientModelsModule m : toRemove) {
m.disposeModule();
}
}
}); ++i) {
try {
Thread.sleep((1<<i)*100);
} catch (InterruptedException ignore) {}
}
if (i >= 3) {
throw new RuntimeException("Failed to acquire write lock");
}
TransientSwapSpace space = getTransientSwapSpace();